/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package documenteditor.entidade.model;

import documenteditor.entidade.model.dominio.TipoPonto;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import org.hibernate.annotations.ForeignKey;

/**
 *
 * @author gleidson.moura
 */
@Entity
@Table(name="GRUPO_PRODUTO")
@SequenceGenerator(name="GEN_GRUPO_PRODUTO", sequenceName="GEN_GRUPO_PRODUTO_ID")
public class GrupoProduto implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name="ID_GRUPO_PRODUTO")
    @GeneratedValue(strategy = GenerationType.AUTO, generator="GEN_GRUPO_PRODUTO")
    private Long idGrupoProduto;

    @Column(name="DESCRICAO_GRUPO_PRODUTO", nullable=false)
    private String descricaoGrupoProduto;

    @OneToMany(targetEntity=Produto.class, mappedBy="grupoProduto", fetch=FetchType.LAZY)
    @ForeignKey(name="FK_PRODUTO_GRUPO_PRODUTO")
    private Set<Produto> produtos = new HashSet<Produto>();

    public Long getIdGrupoProduto() {
        return idGrupoProduto;
    }

    public void setIdGrupoProduto(Long idGrupoProduto) {
        this.idGrupoProduto = idGrupoProduto;
    }

    public String getDescricaoGrupoProduto() {
        return descricaoGrupoProduto;
    }

    public void setDescricaoGrupoProduto(String descricaoGrupoProduto) {
        this.descricaoGrupoProduto = descricaoGrupoProduto;
    }

    public Set<Produto> getProdutos() {
        return produtos;
    }

    public void setProdutos(Set<Produto> produtos) {
        this.produtos = produtos;
    }
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idGrupoProduto != null ? idGrupoProduto.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof GrupoProduto)) {
            return false;
        }
        GrupoProduto other = (GrupoProduto) object;
        if ((this.idGrupoProduto == null && other.idGrupoProduto != null) || (this.idGrupoProduto != null && !this.idGrupoProduto.equals(other.idGrupoProduto))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "documenteditor.entidade.model.GrupoProduto[id=" + idGrupoProduto + "]";
    }

}
